package com.junzhiit.nengji.dao;

import java.util.Date;
import java.util.List;

import com.bainaeco.framework.base.dao.BaseDAO;
import com.junzhiit.nengji.bo.NoticeBO;
import com.junzhiit.nengji.model.Notice;
import com.junzhiit.nengji.model.NoticeRead;

public interface NoticeDAO extends BaseDAO<Notice> {
	/**
	 * 
	 * TODO 查询所有的公告信息
	 * 
	 * @author Qjen
	 * @time 2018年1月24日 上午9:11:54
	 * @return List<NoticeBO>
	 *
	 */
	public List<NoticeBO> findAll(int pageNumber, int maxPageRow, String shopId);
	
	
	/**
	 * TODO 查询未读消息，分页查询
	 * @author DlamLiu
	 * @time 2018年6月19日 上午11:50:43
	 * @return List<NoticeBO>
	 * 
	 */
	public List<NoticeBO> findAllUnread(int pageNumber, int maxPageRow, String shopId,NoticeRead noticeRead);
	
	/**
	 * TODO 获取未读消息总数
	 * @author DlamLiu
	 * @time 2018年6月19日 下午12:02:40
	 * @return Integer
	 * 
	 */
	public Integer getUnreadTotalCount(String shopId,NoticeRead noticeRead);
	
	/**
	 * TODO 获取未读消息自区间(在past_record与current_record之间)总数
	 * @author DlamLiu
	 * @time 2018年6月19日 下午2:06:25
	 * @return Integer
	 * 
	 */
	public Integer getUnreadTotalCountSubrange(String shopId,NoticeRead noticeRead);
	
	/**
	 * 
	 * TODO 公告详情
	 * 
	 * @author Qjen
	 * @time 2018年1月24日 上午9:11:54
	 * @return NoticeBO
	 *
	 */
	public NoticeBO findById(String id);

	/**
	 * 
	 * TODO 查询所有的公告信息数量
	 * 
	 * @author Qjen
	 * @time 2018年1月24日 上午9:12:23
	 * @return Integer
	 *
	 */
	public Integer getTotalCount(String shopId);

	/**
	 * 
	 * TODO 获取最大Sort
	 * 
	 * @author Qjen
	 * @time 2018年1月24日 上午9:12:51
	 * @return Integer
	 *
	 */
	public Integer getMaxSort(String shopId);

	/**
	 * 
	 * TODO 获得今天过期的公告
	 * 
	 * @author Qjen
	 * @time 2018年5月16日 上午11:20:50
	 * @return List<Notice>
	 *
	 */
	public List<Notice> getFailureNotice(Date date);
	
	/**
	 * 
	 * TODO 获取所有公告消息列表
	 * 
	 * @author Qjen
	 * @time 2018年5月30日 上午10:35:08
	 * @return List<NoticeBO>
	 *
	 */
	public List<NoticeBO> findAllNoticeNews(int pageNumber, int maxPageRow);
	
	/**
	 * 
	 * TODO 获取所有公告消息列表数量
	 * 
	 * @author Qjen
	 * @time 2018年1月24日 上午9:12:23
	 * @return Integer
	 *
	 */
	public Integer getNoticeNewsCount();
}
